home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / regitem.cls < prev    next >
Text File  |  1997-06-14  |  3KB  |  123 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4. END
  5. Attribute VB_Name = "CRegItem"
  6. Attribute VB_GlobalNameSpace = False
  7. Attribute VB_Creatable = True
  8. Attribute VB_PredeclaredId = False
  9. Attribute VB_Exposed = True
  10. Option Explicit
  11.  
  12. Public Enum EErrorRegItem
  13.     eeBaseRegItem = 13160   ' CRegItem
  14. End Enum
  15.  
  16. Private node As CRegNode
  17. Private vValue As Variant
  18. Private sName As String
  19.  
  20. ' Create/Destroy Value
  21.  
  22. Sub Create(nodeA As CRegNode, vIndex As Variant)
  23.     Set node = nodeA
  24.     Dim e As Long
  25.     Select Case VarType(vIndex)
  26.     Case vbString
  27.         sName = vIndex
  28.         e = MRegTool.GetRegValue(node.Key, CStr(vIndex), vValue)
  29.                 
  30.     Case vbInteger, vbLong
  31.         e = MRegTool.GetRegValueNext(node.Key, CLng(vIndex), sName, vValue)
  32.         
  33.     Case Else
  34.         ApiRaiseIf ERROR_INVALID_DATA
  35.         
  36.     End Select
  37.     ApiRaiseIf e
  38. End Sub
  39.  
  40. Sub Destroy()
  41.     ' Nothing to do
  42. End Sub
  43.  
  44. ' Friend properties to make data structure accessible to walker
  45. Friend Property Get RegItems(i As Long) As CRegItem
  46.     Set RegItems = node.Items(i)
  47. End Property
  48.  
  49. ' NewEnum must have the procedure ID -4 in Procedure Attributes dialog
  50. ' Create a new data walker object and connect to it
  51. Public Function NewEnum() As IEnumVARIANT
  52. Attribute NewEnum.VB_UserMemId = -4
  53.     ' Create a new iterator object
  54.     Dim walker As CRegItemWalker
  55.     Set walker = New CRegItemWalker
  56.     ' Connect it with collection data
  57.     walker.Attach Me
  58.     ' Return it
  59.     Set NewEnum = walker.NewEnum
  60. End Function
  61.  
  62. Property Get Count() As Long
  63.     Count = node.ItemCount
  64. End Property
  65.  
  66. ' Default property
  67. '!Public Property Get Item(vIndex As Variant) '! As DataType
  68.     '!Set Item = data(vIndex)
  69. '!End Property
  70. ' Get/Set Value
  71. 'RegQueryValue
  72. 'RegQueryValueEx
  73. 'RegSetValue
  74. 'RegSetValueEx
  75.  
  76. Property Get Name() As String
  77.     Name = sName
  78. End Property
  79.  
  80. Property Get Value() As Variant
  81. Attribute Value.VB_UserMemId = 0
  82.     Value = vValue
  83. End Property
  84.  
  85. Property Let Value(vValueA As Variant)
  86.     Dim ordType As Long, e As Long
  87.     Select Case VarType(vValueA)
  88.     Case vbString
  89.         ordType = REG_SZ
  90.     Case vbInteger, vbLong
  91.         ordType = REG_DWORD
  92.     Case Else
  93.     End Select
  94.     e = MRegTool.CreateRegValue(vValueA, node.Key, sName)
  95.     ApiRaiseIf e
  96.     e = RegFlushKey(node.Key)
  97.     ApiRaiseIf e
  98. End Property
  99.  
  100. #If fComponent = 0 Then
  101. Private Sub ErrRaise(e As Long)
  102.     Dim sText As String, sSource As String
  103.     If e > 1000 Then
  104.         sSource = App.ExeName & ".RegItem"
  105.         Select Case e
  106.         Case eeBaseRegItem
  107.             BugAssert True
  108.        ' Case ee...
  109.        '     Add additional errors
  110.         End Select
  111.         Err.Raise COMError(e), sSource, sText
  112.     Else
  113.         ' Raise standard Visual Basic error
  114.         sSource = App.ExeName & ".VBError"
  115.         Err.Raise e, sSource
  116.     End If
  117. End Sub
  118. #End If
  119.  
  120.  
  121.  
  122.  
  123.